标准的Groovy包含一个@Grab注解,它允许你声明对第三方库的依赖。这项有用的技术允许Groovy以和Maven或Gradle相同的方式下载jars,但不需要使用构建工具。
Spring Boot进一步延伸了该技术,它会基于你的代码尝试推导你"grab"哪个库。例如,由于WebApplication代码上使用了@RestController注解,"Tomcat"和"Spring MVC"将被获取(grabbed)。
下面items被用作"grab hints":
| items | Grabs |
|---|---|
| JdbcTemplate,NamedParameterJdbcTemplate,DataSource | JDBC应用 |
| @EnableJms | JMS应用 |
| @EnableCaching | Caching abstraction |
| @Test | JUnit |
| @EnableRabbit | RabbitMQ |
| @EnableReactor | Project Reactor |
| 继承Specification | Spock test |
| @EnableBatchProcessing | Spring Batch |
| @MessageEndpoint,@EnableIntegrationPatterns | Spring Integration |
| @EnableDeviceResolver | Spring Mobile |
| @Controller,@RestController,@EnableWebMvc | Spring MVC + Embedded Tomcat |
| @EnableWebSecurity | Spring Security |
| @EnableTransactionManagement | Spring Transaction Management |
注:想要理解自定义是如何生效,可以查看Spring Boot CLI源码中的CompilerAutoConfiguration子类。